/**************************
* @Summary
* @Author 20009200303 赵传博
* @Date 6/7/2022
* @Note
*****************************/

#ifndef EX6_ANIMALCORE_H
#define EX6_ANIMALCORE_H
#include "Dog.h"
#include "Cat.h"

/**
 * 重点：
 *      因为i_Am是虚函数，所以多态实现的时候会动态绑定，也就是多态
 *      而hello不是虚函数，所以不会动态绑定，什么类型调用的就找什么类型的实现
 */

class AnimalCore {
public:
    static void invoke_base(Animal * animal) { std::cout << "===\n"; animal->i_Am(); animal->hello(); animal->common(); std::cout << "===\n";}
    static void invoke_base(Animal & animal) { std::cout << "===\n"; animal.i_Am(); animal.hello(); animal.common(); std::cout << "===\n"; }

};


#endif //EX6_ANIMALCORE_H
